use std::fs;
use std::path::Path;
use std::io::Write;
use anyhow::Result;
use spider_rs::website::Website;
use spider_rs::tokio;

#[tokio::main]
async fn main() -> Result<()> {
    println!("开始爬取 Cisco ChezScheme 用户指南...");

    // 确保 resources 目录存在
    let resources_dir = Path::new("resources");
    if !resources_dir.exists() {
        fs::create_dir_all(resources_dir)?;
        println!("创建 resources 目录");
    }

    // 创建 Website 实例
    let url = "https://cisco.github.io/ChezScheme/csug/csug.html";
    let mut website = Website::new(url);

    // 配置爬虫
    website.configuration.respect_robots_txt = false;
    website.configuration.subdomains = true;
    website.configuration.tld = false;
    website.configuration.delay = 100; // 延迟100毫秒，避免请求过快

    // 开始爬取
    println!("正在爬取页面: {}", url);
    website.scrape().await;

    // 获取爬取的页面内容
    let empty_vec = vec![];
    let pages = website.get_pages().unwrap_or(&empty_vec);

    if pages.is_empty() {
        println!("未找到任何页面内容");
        return Ok(());
    }

    // 获取主页面内容
    let main_page = &pages[0];
    let html_content = main_page.get_html();

    // 保存到文件
    let file_path = resources_dir.join("csug.html");
    let mut file = fs::File::create(&file_path)?;
    file.write_all(html_content.as_bytes())?;

    println!("成功爬取并保存 HTML 到 {}", file_path.display());

    // 输出一些统计信息
    println!("爬取完成! 共爬取 {} 个页面", pages.len());
    println!("主页面大小: {} 字节", html_content.len());

    Ok(())
}
